﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using AvaliacaoOnline.Model;
using AvaliacaoOnline.Data;

namespace Avaliacao.Controllers
{

    public class HomeController : BaseController
    {
        //public ActionResult Index()
        //{
        //    Session["TipoUsuario"] = "X";
        //    String cliente = base.Cliente;
        //    return View();
        //}

        public ActionResult Index(string cliente)
        {
            Session["TipoUsuario"] = "X";
            ViewData["Cliente"] = this.Cliente;

            if (String.IsNullOrWhiteSpace(this.Cliente) || cliente==null)
            {
                ViewData["LoginUrl"] = Url.Content(@"~/Home/Login/");
            }
            else
            {
                
                //public  GetAvaliacoes(idCliente)
                int idCliente = new ClienteRepository().GetClientePorUrl(cliente).Id;

                List<AvaliacaoOnline.Data.Avaliacao> lstAvaliacao = new AvaliacaoOnline.Model.AvaliacaoRepository().GetAvaliacoes(idCliente);

                if (lstAvaliacao.Count > 0)
                {

                    ViewData["CustomBackground"] = Url.Content("~" + UploadService.GetFileURL(@"/",
                                                                    lstAvaliacao.First().ImagemFundo,
                                                                    lstAvaliacao.First().IdCliente,
                                                                    lstAvaliacao.First().Id));
                    ViewData["CustomBackground"] = ViewData["CustomBackground"].ToString().EndsWith("/") ? "" : ViewData["CustomBackground"];
                }

                ViewData["LogotipoCliente"] = Url.Content("~" + new ClienteService().GetLogoImagemURL(("/"), idCliente));

                ViewData["LoginUrl"] = Url.Content(@"~/" + this.Cliente + @"/Home/Login/");
            }

            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Login(string login, string senha)
        {
            if (String.IsNullOrWhiteSpace(this.Cliente))
                ViewData["LoginUrl"] = Url.Content(@"~/Home/Login/");
            else
                ViewData["LoginUrl"] = Url.Content(@"~/" + this.Cliente + @"/Home/Login/");


            LoginService oLogin = new LoginService();
            Usuario usuario = oLogin.EfetuarLogin(login, senha);
            if (usuario != null)
            {
                Session["TipoUsuario"] = usuario.Tipo;
                Session["IdUsuario"] = usuario.Id;
                Session["IdCliente"] = usuario.IdCliente;
                Session["NomeCliente"] = usuario.Nome;
                Session["ClienteUrl"] = usuario.Cliente.Url;

                //Response.Redirect("/avaliacao/list");
                if (usuario.Tipo == "A")
                {
                    ViewData["Url"] = Url.Content("~/avaliacao/list");
                }
                else if (usuario.Tipo == "U" || usuario.Tipo == "G")
                {
                    if (Session["ClienteUrl"].ToString() == this.Cliente)
                    {
                        if (usuario.Tipo == "G")
                            ViewData["Url"] = Url.Content("~/" + this.Cliente + "/gestao/index");
                        else
                            ViewData["Url"] = Url.Content("~/" + this.Cliente + "/teste/index");
                    }
                    else
                    {
                        Session.Abandon();
                        ViewData["Mensagem"] = "Usuário ou senha inválida.";
                    }
                }

            }
            else
            {
                ViewData["Mensagem"] = "Usuário ou senha inválida.";
            }
            return View("Index");
        }


        public JsonResult LoginAjax(string login, string senha, string cliente)
        {
            string url = "";
            string mensagem = "";

            //if (String.IsNullOrWhiteSpace(this.Cliente))
            //    ViewData["LoginUrl"] = Url.Content(@"~/Home/Login/");
            //else
            //    ViewData["LoginUrl"] = Url.Content(@"~/" + this.Cliente + @"/Home/Login/");


            LoginService oLogin = new LoginService();
            Usuario usuario = oLogin.EfetuarLogin(login, senha);
            if (usuario != null)
            {
                Session["TipoUsuario"] = usuario.Tipo;
                Session["IdUsuario"] = usuario.Id;
                Session["IdCliente"] = usuario.IdCliente;
                Session["NomeCliente"] = usuario.Nome;
                Session["ClienteUrl"] = usuario.Cliente.Url;

                if (usuario.Tipo == "A")
                {
                    url = Url.Content("~/avaliacao/list");
                }
                else if (usuario.Tipo == "U" || usuario.Tipo == "G")
                {
                    if (Session["ClienteUrl"].ToString() == cliente)
                    {
                        if (usuario.Tipo == "G")
                            url = Url.Content("~/" + this.Cliente + "/gestao/index");
                        else
                            url = Url.Content("~/" + this.Cliente + "/teste/index");
                    }
                    else
                    {
                        Session.Abandon();
                        mensagem = "Mensagem:Usuário ou senha inválida.";
                    }
                }
            }
            else
            {
                mensagem = "Mensagem:Usuário ou senha inválida.";
            }

            return new JsonResult() { Data = url == "" ? mensagem : url };

        }
    }
}
